linux 字体配置

·

字体配置中涉及到的几个名称

字体的几个“名字”:别被搞混了

一个字体在系统中可能有多个“名字”,它们分别是:

名称类型实例说明
字体文件名JetBrainsMono-Regular.ttf文件系统中的名字, 不用于配置
字体族名(Family)JetBrains Mono最重要的名字,用于 fc-match 和 Kitty 配置
字体样式名(Style)Regular , Bold , Italic区分粗体、斜体等
完整字体名(Full Name)JetBrains Mono Regular族名 + 样式,一般也不用于配置

用 fc-list 看看实际输出

先安装对应的字体

sudo apt install fonts-jetbrains-mono

使用fc-list 查看

fc-list | grep -i "jetbrains"
fc-list | grep -i "notosansmono"

输出可能类似:

/usr/share/fonts/JetBrainsMono/JetBrainsMono-Regular.ttf: JetBrains Mono:style=Regular
/usr/share/fonts/JetBrainsMono/JetBrainsMono-Bold.ttf: JetBrains Mono:style=Bold

解读:

  • 路径:/usr/share/fonts/.../JetBrainsMono-Regular.ttf → 这是文件名
  • 第一个名字:JetBrains Mono → 这是字体族名(Family) ✅(你要用的)
  • style=Regular → 这是字体样式

✅ 所以你应该在 Kitty 中使用 font_family JetBrains Mono,而不是 JetBrainsMono-Regular.ttf

fc-match 用什么名字?用“字体族名”

fc-match "JetBrains Mono"
  • ✅ 正确:使用 族名(JetBrains Mono)
  • ❌ 错误:使用文件名(JetBrainsMono-Regular.ttf)或完整名(JetBrains Mono Regular) 输出示例:
  • JetBrainsMono-Regular.ttf: "JetBrains Mono" "Regular"
  • 这说明匹配成功。

使用fontconfig工具

apt install fontconfig

方法 1:用 fc-list 提取族名(推荐)

# 列出所有 JetBrains 字体的族名
fc-list : family | grep -i jetbrains
  • 输出:
  • JetBrains Mono
  • → 你就用 JetBrains Mono 作为 font_family

方法 2:用 fc-match 验证是否能匹配

fc-match "JetBrains Mono"

如果返回 .ttf 文件路径,说明名字正确。

方法 3:查看字体详细信息(高级)

使用 fc-query 查看某个字体文件的元数据:

fc-query /usr/share/fonts/JetBrainsMono/JetBrainsMono-Regular.ttf | grep -i family
  • 输出:
  • family: "JetBrains Mono"
  • familylang: "en"
  • → 所以族名是 JetBrains Mono

🚫 常见错误用法(不要这样做)

  • font_family JetBrainsMono-Regular.ttf
  • font_family JetBrains Mono Regular
  • font_family /usr/share/fonts/.../ttf

特殊情况:Nerd Fonts 补丁字体

Nerd Fonts 给字体加了图标支持,通常会修改族名。

例如:

fc-list | grep -i "nerd"
  • 输出:
  • ... FiraCode Nerd Font:style=Regular
  • ... JetBrainsMono Nerd Font:style=Medium

✅ 正确配置:

  • font_family FiraCode Nerd Font
  • 注意:空格和大小写都要一致!

实用命令速查表

fc-list
# 格式:文件路径: 家族名, 完整名:style=样式
# 1. 列出所有字体族名(只显示 family)
fc-list : family
# 2. 搜索包含 "mono" 的字体族
fc-list : family | grep -i mono
# 3. 搜索 JetBrains 相关字体
fc-list : family | grep -i jetbrains
# 4. 验证某个字体是否可用
fc-match "Fira Code"
fc-match "JetBrains Mono"
# 5. 刷新字体缓存(安装新字体后)
fc-cache -fv
# 6
fc-list : family style

内部元数据名称

fc-scan /usr/share/fonts/truetype/jetbrains-mono/JetBrainsMono-Regular.ttf

fc-match monospace 的含义

monospace 是 fontconfig 定义的逻辑字体分类名

  • 隐式属性匹配‌

    • monospace是Fontconfig通过spacing属性自动识别的分类,而非字体元数据中的显式字段。当字体满足spacing=100(等宽)时,系统会将其归入monospace类别,但该标签不会出现在fc-list的原始输出中56。
  • ‌验证方法‌

    • 通过以下命令可查看字体的等宽属性:
fc-list :spacing=100  # 列出所有等宽字体
fc-list : family spacing | grep -B1 "100"  # 显示家族名和间距属性
graph LR
A[应用程序请求<br>“monospace”字体] --> B[fontconfig 规则引擎]
B --> C{匹配规则库<br>/etc/fonts/conf.d}
C --> D[物理字体文件]
D --> E[返回实际字体路径]
fc-match -s monospace | head -n5
fc-match monospace |head -n1 
# 查看完整的字体属性
fc-query /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc | grep -E 'family|style'

为什么这样设计?

  • 抽象层价值:
    • 应用程序只需请求 "monospace",不需知道具体字体
    • 系统管理员可统一修改所有应用的等宽字体
  • 多语言支持:
<!-- 针对中文的 monospace 优化 -->
<alias>
  <family>monospace</family>
  <prefer>
    <family>Noto Sans Mono CJK SC</family>
  </prefer>
</alias>
  • 字体回退机制: 当首选字体缺失字符时,自动回退到备选字体

其他主要的逻辑字体分类名

  • serif(衬线体)
    • 特征:字符末端带有装饰性衬线(如Times New Roman、宋体)。
    • 用途:正文印刷、传统排版,提升长文本可读性13。
    • 示例物理字体:
      • Linux: DejaVu Serif, Liberation Serif
      • Windows: Times New Roman
      • macOS: Georgia
  • sans-serif(无衬线体)
    • 特征:无衬线,线条简洁(如Arial、微软雅黑)。
    • 用途:屏幕显示、现代UI设计,适合标题和短文本134。
    • 示例物理字体:
      • Linux: DejaVu Sans, Noto Sans
      • Windows: Arial
      • macOS: Helvetica
  • cursive(手写体)
    • 特征:模拟手写风格,笔画连贯。
    • 用途:艺术设计、个性化标题,不适用于长文本34。
    • 示例物理字体:Comic Sans MS, Brush Script MT
  • fantasy(装饰体)
    • 特征:高度装饰性,风格多变(如海报字体)。
    • 用途:海报、LOGO设计,强调视觉冲击34。
    • 示例物理字体:Impact, Papyrus
  • symbol(符号字体)
    • 特征:包含特殊符号而非文字(如数学符号、图标)。
    • 用途:数学公式、技术文档中的符号渲染13。
    • 示例物理字体:Webdings, Symbol

思源字体

思源黑体,英文名为Source Han Sans,Google 称之为Noto Sans CJK,是一款由Adobe 和Google 共同开发的开源字体家族。它支持简体中文、繁体中文、日文和韩文,并且有多种字重,旨在为多语言环境提供一致的视觉体验。

思源字体和宋体、黑体的区别在于,思源字体是一个字体家族,包含了思源黑体和思源宋体,而宋体和黑体是两种常见的字体类型,各自都有不同的特点和应用场景。

主要区别

  • 衬线:这是最主要的区别。宋体有衬线,黑体没有衬线.
  • 风格:宋体更传统,黑体更现代.
  • 应用场景:宋体常用于正文,黑体常用于标题和界面.
  • 思源字体:思源字体家族提供了多种字重和对多种语言的支持,可以满足更广泛的需求.

具体含义如下:

  • 思源:
    • “思源”一词出自成语“饮水思源”,寓意对字体来源的尊重和对设计者的感谢。
  • 黑体:
    • 指字体风格,是一种无衬线字体,特点是字形简洁、现代,笔画粗细均匀,易于阅读。
  • Source Han Sans:
    • Adobe 公司对该字体的英文名称,属于Adobe 的Source 字体家族。
  • Noto Sans CJK:
    • Google 公司对该字体的名称,属于Google 的Noto 字体家族。“CJK”代表中文(Chinese)、日文(Japanese)和韩文(Korean),表示该字体支持这三种语言的统一表意文字。

总而言之,思源黑体/Source Han Sans/Noto Sans CJK 是一款由Adobe 和Google 合作开发的开源字体,以“饮水思源”命名,支持多种语言,具有简洁现代的设计风格,广泛应用于网页设计、印刷品、软件界面等领域。

参考

字体配置